#if !defined(TYPELIB_TYPECONV_H)
#define TYPELIB_TYPECONV_H

#include <typelib/types.h>

namespace types {

#if defined(ALIB)

	template <class T>
	inline Vec2D<T, T> ALIB(const point<T> & p)
		{ return Vec2D<T, T>(p.x, p.y); }

	template <class T>
	inline point<T> _ALIB(const Vec2D<T, T> & v)
		{ return point<T>(v.x, v.y); }

#endif // ALIB

#if defined(_AFX)

	inline CPoint MFC(const point<int> & p)
		{ return CPoint(p.x, p.y); }

	inline point<int> _MFC(const CPoint & p)
		{ return point<int>(p.x, p.y); }

	inline CRect MFC(const rect<int> & r)
		{ return CRect(r.x1, r.y1, r.x2, r.y2); }

	inline rect<int> _MFC(const CRect & r)
		{ return rect<int>(r.left, r.top, r.right, r.bottom); }

#endif // _AFX

#if defined(_GLIB)

	template <class T>
	inline g::vector glib(const point<T> & p)
		{ return g::vector(p.x, p.y); }

	template <class T>
	inline g::box glib(const rect<T> & r)
		{ return g::box(r.x1, r.y1, r.x2, r.y2); }

	point<double> _glib(const g::vector & v)
		{ return point<double>(v.x, v.y); }
	rect<double> _glib(const g::box & b)
		{ return rect<double>(b.vmin.x, b.vmin.y, b.vmax.x, b.vmax.y); }

#endif // _GLIB

} // types

#endif // TYPELIB_TYPECONV_H